//
// Description: 71. 简化路径
// Created by Loading on 2025/5/25.
//

#include <bits/stdc++.h>

using namespace std;

string simplifyPath(string path) {
    stack<string> st;
    string s;
    for (auto c : path) {
        if (c == '/') { // 使用'/'分割字符串
            if (s == "..") { // 返回上级目录，出栈
                if (!st.empty()) {
                    st.pop();
                }
            } else if (!s.empty() && s != ".") {
                st.push(s);
            }
            s.clear();
        } else {
            s += c;
        }
    }

    // 处理最后一个字符串
    if (!s.empty() && s != ".") {
        if (s == "..") {
            if (!st.empty()) {
                st.pop();
            }
        } else {
            st.push(s);
        }
    }

    if (st.empty()) {
        return "/";
    }

    string res;
    while (!st.empty()) {
        res.insert(0, '/' + st.top());
        st.pop();
    }

    return res;
}

int main() {
    string path = "/a//b////c/d//././/..";

    auto res = simplifyPath(path);

    cout << res << endl;

    return 0;
}
